
package redeS.mensagem.requisicao;

import redeS.mensagem.*;

/**
 * Classe que representa uma requisição Ping.
 * @see Request
 * @author thiago-pc
 */
public class PingRequest extends Request {

	private int numberOfFiles;
	
	public PingRequest(Ping ping){
		super(ping);
		numberOfFiles = 0;
	}
	
	/**
	 * Número de arquivos (dos nós alcançáveis) que esse nó tem acesso.
	 */
	public int getNumberOfFiles(){
		return numberOfFiles;
	}

	/**
	 * Método sobrecarregado. Veja {@link Request#isAnswer(GnutellaMessage)}.</br>
	 * Em caso afirmativo soma o número de arquivos retornado pelo Pong ao total já
	 * acumulado por essa requisão. Obtenha esse valor com {@link #getNumberOfFiles()},
	 * e incrementa o valor do número de respostas que essa requisição obteve. Obtenha
	 * esse valor em: {@link Request#getNumberOfAnswers()}
	 */
	@Override
	public boolean isAnswer(GnutellaMessage message) {
		// se o Pong tiver o mesmo ID do Ping dessa requisição
		if(message instanceof Pong && ID == message.getDescriptorID()){
			numberOfAnswers++;
			numberOfFiles += ((Pong)message).getNumberOfFiles();
			return true;
		}
		return false;
	}
}
